var basePath = basePath();
/*公共的ajax请求。
url:不带basePath全路径，
项目上下文是basePath，
 type:请求方式,通常是post请求,
 parameter:参数 ，json类型
 fn回调，将返回结果交给调用方处理
 */
function publicAjax(url, type, parameter, fn, isLoading, jsonp, param) {
    param = $.extend({
        async: true
    }, param);
    if (typeof fn !== 'function') {
        flavrShowByTime("回调必须是个函数,function", null, "danger", false);
        return;
    }
    isLoading ? null : loading();
    /* 是否反响代理 */
    var jsonpPram = jsonp ? {dataType: "jsonp",jsonp: "callbackfn",jsonpCallback:'callbackfn'} : {};
    $.ajax($.extend({
        url: url,
        type: type,
        async: param.async,
        data: parameter || {},
        success: function (data) {
            /*if (data.ret === undefined){
                location.href = basePath;
            }*/
            fn(data);
            if (data.ret == 500) {
                // refreshRightDiv("error-500.html",null,2);
                console.log("出错额。。。。500")
            } else if (data.ret == 404) {
                refreshRightDiv("error-404.html", null, 2);
                console.log("出错额。。。。404")
            }
            isLoading ? null : loading('loaded');
        },
        callbackfn: function (data){
            if (data.ret === undefined){
                location.href = basePath;
            }
            fn(data);
            if (data.ret == 500) {
                // refreshRightDiv("error-500.html",null,2);
                console.log("出错额。。。。500")
            } else if (data.ret == 404) {
                refreshRightDiv("error-404.html", null, 2);
                console.log("出错额。。。。404")
            }
            isLoading ? null : loading('loaded');
        },
        error: function (data) {
            /*if (!data.ret){
                location.href = basePath;
            }*/
            isLoading ? null : loading('loaded');
            console.log("出错la。。。。");
            console.log(data.status);
        }
    }, jsonpPram));
}

/* 获取basePath */
function basePath() {
    //获取当前网址，如： http://localhost:8080/ems/Pages/Basic/Person.jsp
    var curWwwPath = window.document.location.href;
    //获取主机地址之后的目录，如： /ems/Pages/Basic/Person.jsp
    var pathName = window.document.location.pathname;
    var pos = pathName === "/" ? (curWwwPath.length - 1) : curWwwPath.indexOf(pathName);
    //获取主机地址，如： http://localhost:8080
    var localhostPath = curWwwPath.substring(0, pos);
    //获取带"/"的项目名，如：/ems
    var projectName = pathName.substring(0, pathName.substr(1).indexOf('/') + 1);
    //获取项目的basePath   http://localhost:8080/ems/
    var basePath = localhostPath + projectName + "/";
    return basePath;
}

/* 日期格式化方法 */
Date.prototype.format = function(fmt) {
    var o = {
        "M+" : this.getMonth()+1,                 //月份
        "d+" : this.getDate(),                    //日
        "h+" : this.getHours(),                   //小时
        "m+" : this.getMinutes(),                 //分
        "s+" : this.getSeconds(),                 //秒
        "q+" : Math.floor((this.getMonth()+3)/3), //季度
        "S"  : this.getMilliseconds()             //毫秒
    };
    if(/(y+)/.test(fmt)) {
        fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
    }
    for(var k in o) {
        if(new RegExp("("+ k +")").test(fmt)){
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
        }
    }
    return fmt;
};

/*
* Loading动画
* */
function loading(status) {
    status = status || 'onloading';
    if (status == 'onloading') {
        if ($('.loading-div').length == 1) {
            $('.loading-div').show();
        } else {
            $('body').append('<div class="loading-div"><img src="' + basePath + '/images/loading.gif" alt="正在加载，请稍候……"></div>').append('<style>.loading-div {position: fixed;width: 100%;height: 100%;left: 0;top: 0;background: rgba(0,0,0,0.5);z-index: 9999;}.loading-div img {display: block;width: 200px;height: 200px;position: absolute;left: 50%;top: 50%;margin: -100px 0 0 -100px;}</style>');
        }
    } else {
        $('.loading-div').hide();
    }
}

/*
* 数字变换动画
* {
*   el: el,  jquery对象
*   newNum: 20, 新的数字
*   fixNum: 2,  保留两位小数
*   totalTime： 1000,   动画时间1000ms
*   interval: 20,
*
* }
* */
function numAnimate(param) {
    param = $.extend({
        el: $(),  // jquery对象
        newNum: 0, // 新的数字
        fixNum: 0,  // 保留两位小数
        unit: '',   // 单位
        totalTime: 1000,   // 动画时间1000ms
        interval: 20   // 间隔时间20s
    }, param);
    var oldNum = parseFloat(param.el.text());
    var count = param.totalTime / param.interval;
    var dValue = (param.newNum - oldNum) / count;
    var flag = 0;
    var timer = setInterval(function () {
        oldNum += dValue;
        param.el.text(oldNum.toFixed(param.fixNum) + param.unit);
        flag++;
        if (flag >= count) {
            param.el.text(param.newNum.toFixed(param.fixNum) + param.unit);
            clearInterval(timer);
        }
    }, param.interval);
}

// 保存两位小数
function fix2(string) {
    return parseFloat(string || 0).toFixed(2);
}

// 保存为整数或者 0
function fix0(string) {
    return parseInt(string || 0);
}

function fixStr(string) {
    return string || '';
}
//最小值
Array.prototype.min = function (key) {
    var min;
    if (key) {
        min = parseFloat(this[0][key] || 0);
        for (var i = 1; i < this.length; i++) {
            if (parseFloat(this[i][key] || 0) < min) {
                min = parseFloat(this[i][key] || 0);
            }
        }
    } else {
        min = parseFloat(this[0] || 0);
        for (var i = 1; i < this.length; i++) {
            if (parseFloat(this[i] || 0) < min) {
                min = parseFloat(this[i] || 0);
            }
        }
    }
    return min;
};
//最大值
Array.prototype.max = function (key) {
    var max;
    if (key) {
        max = parseFloat(this[0][key] || 0);
        for (var i = 1; i < this.length; i++) {
            if (parseFloat(this[i][key] || 0) > max) {
                max = parseFloat(this[i][key] || 0);
            }
        }
    } else {
        max = parseFloat(this[0] || 0);
        for (var i = 1; i < this.length; i++) {
            if (parseFloat(this[i] || 0) > max) {
                max = parseFloat(this[i] || 0);
            }
        }
    }
    return max;
};

function flavrShowByTime(msg, urls, color, isHref) {
    new $.flavr({
        content: msg,
        autoclose: true,
        closeOverlay: true,
        closeEsc: true,
        buttons: [{text: 'ok', style: color}],
        timeout: 3500,
        onClose: function () {
            if (isHref && urls != null) {
                window.location.href = urls;
            }
        }
    });
}